package com.wf.day_0605;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
 * @author mpk16
 */ //初始化数据
public class Test {
    public static void main(String[] args) {


    Trader raoul = new Trader("Raoul", "Cambridge");
    Trader mario = new Trader("Mario","Milan");
    Trader alan = new Trader("Alan","Cambridge");
    Trader brian = new Trader("Brian","Cambridge");
    List<Transaction> transactions = Arrays.asList(
            new Transaction(brian, 2011, 300),
            new Transaction(raoul, 2012, 1000),
            new Transaction(raoul, 2011, 400),
            new Transaction(mario, 2012, 710),
            new Transaction(mario, 2012, 700),
            new Transaction(alan, 2012, 950)
    );




//    (1) 找出2011年发生的所有交易，并按交易额排序（从低到高）。
        System.out.println("------------(1) 找出2011年发生的所有交易，并按交易额排序（从低到高）--------------------");
        transactions
                .stream()
                .filter(transaction -> transaction.getYear() == 2011)
                .sorted(Comparator.comparingInt(Transaction::getValue))
                .forEach(transaction -> System.out.println(transaction.getValue()));
        System.out.println("------------ (2) 交易员都在哪些不同的城市工作过？--------------------");

//            (2) 交易员都在哪些不同的城市工作过？
        transactions
               .stream()
               .map(t->t.getTrader().getCity())
               .distinct()
               .forEach(System.out::println);
        System.out.println("----------   (3) 返回所有来自于剑桥的交易员，并按姓名排序。----------------------");
//            (3) 返回所有来自于剑桥的交易员，并按姓名排序。
        transactions
               .stream()
               .map(Transaction::getTrader)
               .filter(trader -> "Cambridge".equals(trader.getCity()))
               .sorted(Comparator.comparing(Trader::getName))
                .distinct()
               .forEach(System.out::println);
        System.out.println("--------       (4) 返回所有交易员的姓名字符串，按字母顺序排序。------------------------");
//            (4) 返回所有交易员的姓名字符串，按字母顺序排序。
        transactions
               .stream()
               .map(t->t.getTrader().getName())
               .sorted()
                .distinct()
               .forEach(System.out::println);
        System.out.println("---------  (5) 有没有交易员是在米兰工作的？-----------------------");
//            (5) 有没有交易员是在米兰工作的？
        boolean b = transactions
                .stream()
                .map(t->t.getTrader().getCity())
                .anyMatch("Milan"::equals);
        System.out.println(b);
        System.out.println("----------     (6) 打印生活在剑桥的交易员的所有交易额。----------------------");
//            (6) 打印生活在剑桥的交易员的所有交易额。
        transactions
               .stream()
               .filter(transaction -> "Cambridge".equals(transaction.getTrader().getCity()))
               .map(Transaction::getValue)
               .forEach(System.out::println);
        System.out.println("-------- (7) 所有交易中，最高的交易额是多少？------------------------");
//            (7) 所有交易中，最高的交易额是多少？
        transactions
               .stream()
               .map(Transaction::getValue)
               .reduce(Integer::max)
               .ifPresent(System.out::println);
        System.out.println("------------    (8) 找到交易额最小的交易。--------------------");
//            (8) 找到交易额最小的交易。
        transactions
               .stream()
               .min(Comparator.comparingInt(Transaction::getValue))
               .ifPresent(System.out::println);


    }
}